本文已收录至《C++语言和高级数据结构》专栏!作者:ARMCSKGTSTL之vector的使用前言正文默认成员函数普通构造拷贝构造析构函数赋值重载迭代器正向迭代器反向迭代器const迭代器容量类空间容量查询空间容量操作扩容操作元素数量操作缩容操作数据访问下标访问头尾元素访问获取原生指针元素插入删除操作尾插尾删任意位置插入删除任意位置插入任意位置删除其他操作函数交换函数清空函数最后前言vector是可变大小的数组序列容器,一般也叫向量;底层原理是顺序表,但是vector是泛型容器,可以支持int,double甚至自定义类型的存储,在平时应用非常频繁且广阔,vector在很多场景下可以提高我们的开
概述 算法是STL中用来处理容器中数据的一系列模板函数,可以对数据集合进行查找、排序、拷贝等操作。通过使用迭代器,算法可以运用在任意容器之上,做到与操作的数据的类型和结构无关。 STL算法博大精深,涵盖范围非常之广,一共提供了大约100个算法相关的模板函数。这些模板函数涉及的算法主要分为四类,分别为:非可变序列算法:不直接修改其所操作的容器内容的算法,比如:计算相同元素的个数、查找相邻的重复元素。可变序列算法:可以修改其所操作的容器内容的算法,比如:复制容器元素、交换两个容器的内容。排序算法:对序列进行排序和合并的算法、搜索算法以及有序序列上的集合操作。数值算法:对
搜索算法 常用的搜索算法可参看下表。函数名算法描述search搜索迭代器区间中与另一个迭代器区间所有元素匹配的第一次的位置search_n搜索迭代器区间中与若干个相同元素匹配的第一次的位置binary_search以二分法在有序序列中查找指定值,找到返回true,否则返回false 搜索算法的具体使用,可参看下面的示例代码。#include#include#includeusingnamespacestd;staticvoidPrintVector(vector::const_iteratoritBegin,vector::const_iter
文章目录📍前言C++STL之stack&queue基础知识及其模拟实现📍容器适配器🎈什么是适配器?🎈STL标准库中stack和queue的底层结构🎈deque的简单介绍(了解)📌deque的原理介绍📌deque的缺陷🎈为什么选择deque作为stack和queue的底层默认容器?📍stack的介绍和使用🎈stack的介绍🎈stack的常用函数🎈stack的使用📍queue的介绍和使用🎈queue的介绍🎈queue的常用函数🎈queue的使用📍priority_queue的介绍和使用🎈priority_queue的介绍🎈priority_queue的常用函数🎈priority_queue的使用📍
文章目录位图的介绍位图的引入位图的概念位图的应用位图的使用位图的定义位图的成员函数位图运算符的使用位图的模拟实现成员函数构造函数setresettestflip,size,countnone,any,all位图应用题扩展位图模拟实现代码位图的介绍位图的引入有一道面试题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中?对于这道题,我们有两个思路:内存内查找:面对40亿个无符号整数,我们可以使用搜索树和哈希表,时间复杂度也就为O(1),因为搜索树不仅存储数据,还要存储颜色,parent,child指针等,哈希表还要存储迭代器,size等内置成员,进
文章目录前言STL之vector基础1.What:什么是vector?2.Why:为什么使用vector?3.How:怎么使用vector?3.1vector的定义演示:输出:3.2vectoriterator的使用演示:输出:3.3vector空间增长问题3.4vector增删查改演示:3.5vector迭代器失效问题对于vector可能会导致迭代器失效的操作有:4.Where:vector相关OJ题后记前言本篇将学习vector的基础知识🕺作者:迷茫的启明星专栏:《C++初阶》相关文章:《leetcode17.电话号码的字母组合》😘欢迎关注:👍点赞🙌收藏✍️留言🏇码字不易,你的👍点赞🙌收藏
Vector篇Vector介绍Vector实现1、定义默认构造函数使用实现2、迭代器Iterator迭代器使用3、空间增长问题使用实现迭代器迭代器介绍迭代器实现Vector介绍vector是STL中容器之一,特性如下:vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组
目录前言结构解析构造析构构造默认构造初始化成n个val 以迭代器区间构造拷贝构造析构运算符重载赋值重载下标访问迭代器const迭代器容量操作查看大小和容量容量修改数据修改尾插尾删指定位置插入和删除inserterase清空判空交换源码前言从vector开始就要开始使用类模板进行泛型编程,使该容器能够存储各种的类型。由于都是开辟连续空间的容器,因此实际上实现的操作与string相似。主要的难点还是在于结合模板进行使用和迭代器失效的问题。若你对vector还不了解,不妨看看上一篇文章【STL】vector的使用,再来学习模拟实现。结构解析vector使用的数据结构为线性连续空间,为了方便管理我们使
🎇C++学习历程:STL——string学习博客主页:一起去看日落吗持续分享博主的C++学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:也许你现在做的事情,暂时看不到成果,但不要忘记,树🌿成长之前也要扎根,也要在漫长的时光🌞中沉淀养分。静下来想一想,哪有这么多的天赋异禀,那些让你羡慕的优秀的人也都曾默默地翻山越岭🐾。🍁🍃🍂🌿目录🌿1.为什么要学习string类?🍃1.1C语言中的字符串🍃1.2两个面试题(暂不做讲解)🌿2.标准库中的string类🍃2.1string类(了解)🍃2.1string类的常用接口说明(只讲解最常用的接口)🍂2.1.1string类对象的常
🎇C++学习历程:STL——string学习博客主页:一起去看日落吗持续分享博主的C++学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:也许你现在做的事情,暂时看不到成果,但不要忘记,树🌿成长之前也要扎根,也要在漫长的时光🌞中沉淀养分。静下来想一想,哪有这么多的天赋异禀,那些让你羡慕的优秀的人也都曾默默地翻山越岭🐾。🍁🍃🍂🌿目录🌿1.为什么要学习string类?🍃1.1C语言中的字符串🍃1.2两个面试题(暂不做讲解)🌿2.标准库中的string类🍃2.1string类(了解)🍃2.1string类的常用接口说明(只讲解最常用的接口)🍂2.1.1string类对象的常